import axios from 'axios';

// 全局默认配置
axios.defaults.withCredentials = true; // 允许跨域携带 Cookie

const myAxios = axios.create({
    baseURL: "http://47.113.195.131:8122",
    // 测试环境
    // baseURL: "http://localhost:8122",
    timeout: 60000,
    withCredentials: true, // 确保跨域请求携带凭据
    // storedCookies: storedCookies,
});

// 存储 cookies 的变量
let storedCookies = '';

// 请求拦截器 - 添加已存储的 cookies
myAxios.interceptors.request.use(
    (config) => {
        // 如果存在存储的 cookies，添加到请求头
        if (storedCookies) {
            config.headers.Cookie = storedCookies;
        }
        return config;
    },
    (error) => Promise.reject(error)
);

// 响应拦截器 - 捕获并存储 Set-Cookie
myAxios.interceptors.response.use(
    (response) => {
        const { data, headers } = response;

        // 捕获 Set-Cookie 头并存储
        if (headers['set-cookie']) {
            storedCookies = headers['set-cookie'].join('; ');
        }

        // 处理未登录状态（兼容 40100 和 40405 错误码）
        if (data.code === 40100 || data.code === 40405) {
            const isLoginPage = window.location.pathname.includes('/');
            const isLoginRequest = response.config.url.includes('/');

            if (!isLoginRequest && !isLoginPage) {
                window.location.href = `/?redirect=${encodeURIComponent(window.location.href)}`;
            }
        }

        return response;
    },
    (error) => {
        // 统一处理网络错误（如 500、404）
        return Promise.reject(error);
    }
);

export default myAxios;
